package com.ruoyi.mapper;

import java.util.List;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.domain.RecoverStation;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.apache.ibatis.annotations.Delete;

/**
 * 回收站Mapper接口
 * 
 * @author ya
 * @date 2025-08-01
 */
@Mapper
public interface RecoverStationMapper extends BaseMapper<RecoverStation>
{
    /**
     * 查询回收站
     * 
     * @param id 回收站主键
     * @return 回收站
     */
    public RecoverStation selectRecoverStationById(Long id);

    /**
     * 查询回收站列表
     * 
     * @param recoverStation 回收站
     * @return 回收站集合
     */
    public List<RecoverStation> selectRecoverStationList(
            @Param("recoverStation") RecoverStation recoverStation,
            @Param("userName") String userName,
            @Param("allowAll") boolean allowAll);

    /**
     * 新增回收站
     * 
     * @param recoverStation 回收站
     * @return 结果
     */
    public int insertRecoverStation(RecoverStation recoverStation);

    /**
     * 修改回收站
     * 
     * @param recoverStation 回收站
     * @return 结果
     */
    public int updateRecoverStation(RecoverStation recoverStation);

    /**
     * 删除回收站
     * 
     * @param id 回收站主键
     * @return 结果
     */
    public int deleteRecoverStationById(Long id);

    /**
     * 批量删除回收站
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteRecoverStationByIds(Long[] ids);

    // 递减valid_date字段
    @Update("UPDATE recover_station SET valid_date = valid_date - 1")
    void decreaseValidDate();

    // 删除指定valid_date的记录
    @Delete("DELETE FROM recover_station WHERE valid_date = #{validDate}")
    void deleteByValidDate(int validDate);
}
